#ifndef AUDIO_H
#define AUDIO_H

namespace GenBen {

class Sound
{
public:
	Sound() {};
	virtual ~Sound() {};

	virtual bool isStream() = 0;
	virtual float length() = 0;

	virtual void play(Sound* sound) = 0;
	virtual void pause(Sound* sound) = 0;

	virtual float getPos(Sound* sound) = 0;
	virtual void setPos(Sound* sound, float pos) = 0;

	virtual bool isPlaying(Sound* sound) = 0;

	virtual void setVolume(float volume) = 0;
	virtual float getVolume() = 0;
};

class Audio
{
public:
	Sound() {};
	virtual ~Sound() {};

	virtual Sound* loadSample(string filename) = 0;
	virtual Sound* loadStream(string filename) = 0;

	virtual void setSampleVolume(float volume) = 0;
	virtual float getSampleVolume() = 0;

	virtual void setStreamVolume(float volume) = 0;
	virtual float getStreamVolume() = 0;
};

} // namespace

#endif